/**
 * 
 */
package due.pc.pcshoot.gamelogic;

import org.anddev.andengine.engine.handler.IUpdateHandler;
import org.anddev.andengine.entity.scene.Scene;
import org.anddev.andengine.util.MathUtils;

import due.pc.pcshoot.control.Objektiv;
import due.pc.pcshoot.entity.Canon;

/**
 * @author manhhung.vu
 *
 */
public class CanonLogicHandler implements IUpdateHandler 
{
	//===============================================================/
	//Constants
	//===============================================================/
	
	
	//===============================================================/
	//Fields
	//===============================================================/
	private Canon mCanon;
	private Objektiv mObjektiv;
	
	//===============================================================/
	//Constructors
	//===============================================================/
	public CanonLogicHandler(Canon pCanon, Objektiv pBindToObjective, Scene pScene) 
	{
		mCanon = pCanon;
		pScene.attachChild(mCanon);

		mObjektiv = pBindToObjective;
		mObjektiv.registerUpdateHandler(this);
	}
	
	//===============================================================/
	//Inherited Methods
	//===============================================================/
	@Override
	public void onUpdate(float pSecondsElapsed) 
	{
		float deltaX = mObjektiv.getX() + mObjektiv.getWidth()/2 - (mCanon.getX() + mCanon.getWidth()/2);
		float deltaY = mCanon.getY() + mCanon.getHeight()/2 - (mObjektiv.getY() + mObjektiv.getHeight()/2);

		if (deltaX == 0) {
			mCanon.setRotation(0f);
		}
		else {
			float radAngel = (float) Math.atan2(deltaX, deltaY);
//			Log.d("Canon", "on update angel " + MathUtils.radToDeg(radAngel));
			mCanon.setRotation(MathUtils.radToDeg(radAngel));
		}	
	}
	
	@Override
	public void reset() {
		// TODO Auto-generated method stub
		
	}
	
	//===============================================================/
	//Methods
	//===============================================================/
	
	
	//===============================================================/
	//Getters & Setters
	//===============================================================/
	
	
	//===============================================================/
	//Static Methods
	//===============================================================/
	
	
	//===============================================================/
	//Inner Classes
	//===============================================================/

}
